Tags:   
		
				java
				
		
			
		
	
		
		
		
		
				
				
					
					
	
						Hej...
Jeg er en nybegynder i Java, men prøver nu at lave noget netværkshalløj, læst i en artikel her på sitet.
Jeg kunne godt tænke mig at få returneret værdien i try{} sådan at jeg kan bruge den i min GUI.. er det mig der griber det forkert an, eller?
Min kode er her, vigtige dele af min kode er markeret således: // ********
Alt der er gennemstreget mener jeg ikke er vigtigt..
Dette er min klient:
import java.net.Socket;
import java.net.UnknownHostException;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
public class EchoClient {
    public void connect()
    {
        	Socket sock=null;
	try {
	    sock = new Socket("localhost", 10000); //Opret forbindelse til localhost:10000
	} catch (UnknownHostException uhe) {
	    System.out.println("[client] Ukendt værtsnavn");
	    uhe.printStackTrace();
	    System.exit(1);
	} catch (IOException ioe) {
	    System.out.println("[client] Kunne ikke oprette forbindelsen");
	    ioe.printStackTrace();
	    System.exit(1);
	}
        
    }
    
    public String getInfo()
    {
       	try {
            
	Socket sock=null;
            sock = new Socket("localhost", 10000); //Opret forbindelse til localhost:10000
	    InputStream in = sock.getInputStream(); //Stream til indkommende data
	    OutputStream out = sock.getOutputStream(); //Stream til udgående data
	    out.write("Dette er en test".getBytes());
	    int MAX_SIZE = 16384; //16k
	    byte[] buffer = new byte[MAX_SIZE];
	    	    String str = new String("");
	    while (true) {
		int read = in.read(buffer, 0, MAX_SIZE); //læs op til MAX_SIZE tegn.
		String fisse = new String(buffer, 0, read);  //************
		System.out.println("Modtaget: "+new String(buffer, 0, read));
		/* Hop ud af while-løkken hvis vi har læst mindre end MAX_SIZE */
		if (read < MAX_SIZE) {
                    
                    break;
                    
	    }
                        return fisse; //************
            }
	} catch (IOException e) {
	    e.printStackTrace();
	}
    } 
        
    public static void main(String[] args) {
	Socket sock=null;
	try {
	    sock = new Socket("localhost", 10000); //Opret forbindelse til localhost:10000
	} catch (UnknownHostException uhe) {
	    System.out.println("[client] Ukendt værtsnavn");
	    uhe.printStackTrace();
	    System.exit(1);
	} catch (IOException ioe) {
	    System.out.println("[client] Kunne ikke oprette forbindelsen");
	    ioe.printStackTrace();
	    System.exit(1);
	}
	/* Nu har vi en forbindelse til fjerncomputeren */
	try {
	    InputStream in = sock.getInputStream(); //Stream til indkommende data
	    OutputStream out = sock.getOutputStream(); //Stream til udgående data
	    out.write("Dette er en test".getBytes());
	    int MAX_SIZE = 16384; //16k
	    byte[] buffer = new byte[MAX_SIZE];
	    	    String str = new String("");
	    while (true) {
		int read = in.read(buffer, 0, MAX_SIZE); //læs op til MAX_SIZE tegn.
		
		System.out.println("Modtaget: "+new String(buffer, 0, read));
		/* Hop ud af while-løkken hvis vi har læst mindre end MAX_SIZE */
		if (read < MAX_SIZE) {
                    break;
	    }
            }
	    sock.close();
	} catch (IOException e) {
	    e.printStackTrace();
	}
    }
}
						
						
						
						
					
		
				 
					
				
	
					
						4 svar postet i denne tråd vises herunder
						1 indlæg har modtaget i alt 2 karma
					
					
					
				
 
					
			
				
				
					
					
	
						For at være mere præcis så kræver Java compileren at hvis en metode har retur type forskellig fra void, så skal alle veje igennem metodens krop ende i en return statement der returnerer noget med den korrekte type. 
I dit tilfælde kan du enten lave en finally clause på din try-catch hvor du returnerer en String, men det er sådan set også nok at indsætte en return statement i din catch eller i slutningen af metoden (formålet med finally er at sikre at en stump bliver kørt ligegyldig om der blev kastet en exception i den foregående try-catch blok eller ej). Endelig kan du også kaste en ny exception i catch, og derved undgå en return statement.
						
						
						
						
					
		
				 
					
				
					
			
				
	
					
						
					0
					
						
					
					
				
 
				
					
					
	
						BTW så undskylder jeg for mit sprogbrug, jeg er bare frustreret og når jeg er frustreret, sker dette..
						
						
						
						
					
		
				 
					
				
					
			
				
	
					
						
					0
					
						
					
					
				
 
				
					
					
	
						Hvis du modererer din kode, skal jeg nok læse den igen og kommentere på den.
						
						
						
						
					
		
				 
					
				
					
			
				
	
					
						
					0
					
						
					
					
				
 
				
					
					
	
						Gæt:
Du kan ikke sidst i en try skrive return, uden at have en return hvis det skulle fejle, så return i catch også - ved ikke om der som i C# er en finally der afvilkes ligegodt hvad.
Ellers bare return null efter din try catch
/J